Fix some bugs with size requisition. (From Bill Haneman) Draw headers and
authorOwen Taylor <otaylor@redhat.com>
Mon, 3 Dec 2001 15:24:25 +0000 (15:24 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 3 Dec 2001 15:24:25 +0000 (15:24 +0000)
Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
* gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
some bugs with size requisition. (From Bill Haneman)
* gtk/gtkcalendar.c: Draw headers and selection in
base/text[SELECTED] instead of fg/bg[SELECTED].
* gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
code and formatting.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkcalendar.c

index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index d15dcb6e73fac402896bd6a3516ae9c6c1f86b86..f5769b8ea7604dece4acfcf735383194273e32aa 100644 (file)
@@ -1,3 +1,14 @@
+Mon Dec  3 10:23:07 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c (gtk_calendar_size_request): Fix
+       some bugs with size requisition. (From Bill Haneman)
+
+       * gtk/gtkcalendar.c: Draw headers and selection in 
+       base/text[SELECTED] instead of fg/bg[SELECTED].
+
+       * gtk/gtkcalendar.c: Miscellaneous cleanups to drawing
+       code and formatting.
+
 2001-12-03  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtktextview.c (set_window_height): 
index 0f31cb3504b98fa6ff4ad10d023f49bf1fbab696..e5276ccc26851bbb1fd07cbe09775e47d3e3aae7 100644 (file)
@@ -175,7 +175,7 @@ dates_difference(N_int year1, N_int mm1, N_int dd1,
 /* Color usage */
 #define HEADER_FG_COLOR(widget)                 (& (widget)->style->fg[GTK_WIDGET_STATE (widget)])
 #define HEADER_BG_COLOR(widget)                 (& (widget)->style->bg[GTK_WIDGET_STATE (widget)])
-#define DAY_NAME_COLOR(widget)          (& (widget)->style->bg[GTK_STATE_SELECTED])
+#define DAY_NAME_COLOR(widget)          (& (widget)->style->base[GTK_STATE_SELECTED])
 #define NORMAL_DAY_COLOR(widget)        (& (widget)->style->fg[GTK_WIDGET_STATE (widget)])
 #define SELECTION_FOCUS_COLOR(widget)   (& (widget)->style->fg[GTK_WIDGET_STATE (widget)])
 #define SELECTION_NO_FOCUS_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)])
@@ -261,7 +261,6 @@ static void gtk_calendar_init               (GtkCalendar *calendar);
 static void gtk_calendar_destroy       (GtkObject *calendar);
 static void gtk_calendar_realize       (GtkWidget *widget);
 static void gtk_calendar_unrealize     (GtkWidget *widget);
-static void gtk_calendar_draw_focus    (GtkWidget *widget);
 static void gtk_calendar_size_request  (GtkWidget *widget,
                                         GtkRequisition *requisition);
 static void gtk_calendar_size_allocate (GtkWidget *widget,
@@ -290,8 +289,6 @@ static void gtk_calendar_paint_week_numbers (GtkWidget *widget);
 static void gtk_calendar_paint_main        (GtkWidget *widget);
 
 
-static void gtk_calendar_paint         (GtkWidget    *widget,
-                                        GdkRectangle *area);
 static void gtk_calendar_paint_arrow   (GtkWidget    *widget,
                                         guint         arrow);
 static void gtk_calendar_paint_day_num (GtkWidget    *widget,
@@ -660,8 +657,8 @@ gtk_calendar_set_month_prev (GtkCalendar *calendar)
        calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
       gtk_calendar_select_day (calendar, calendar->selected_day);
     }
-  
-  gtk_calendar_paint (GTK_WIDGET (calendar), NULL);
+
+  gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
 }
 
@@ -701,8 +698,8 @@ gtk_calendar_set_month_next (GtkCalendar *calendar)
     }
   else
     gtk_calendar_select_day (calendar, calendar->selected_day);
-  
-  gtk_calendar_paint (GTK_WIDGET(calendar), NULL);
+
+  gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
 }
 
@@ -731,7 +728,7 @@ gtk_calendar_set_year_prev (GtkCalendar *calendar)
   else
     gtk_calendar_select_day (calendar, calendar->selected_day);
   
-  gtk_calendar_paint (GTK_WIDGET (calendar), NULL);
+  gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
 }
 
@@ -764,7 +761,7 @@ gtk_calendar_set_year_next (GtkCalendar *calendar)
   else
     gtk_calendar_select_day (calendar, calendar->selected_day);
   
-  gtk_calendar_paint (GTK_WIDGET (calendar), NULL);
+  gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
 }
 
@@ -904,8 +901,8 @@ gtk_calendar_realize_header (GtkWidget *widget)
       attributes.colormap = gtk_widget_get_colormap (widget);
       attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-      attributes.x = 2;
-      attributes.y = 2;
+      attributes.x = widget->style->xthickness;
+      attributes.y = widget->style->ythickness;
       attributes.width = widget->allocation.width - 4;
       attributes.height = private_data->header_h;
       private_data->header_win = gdk_window_new (widget->window,
@@ -990,7 +987,7 @@ gtk_calendar_realize_week_numbers (GtkWidget *widget)
       attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
       
       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-      attributes.x = + (widget->style->xthickness + INNER_BORDER);
+      attributes.x = widget->style->xthickness + INNER_BORDER;
       attributes.y = (private_data->header_h + private_data->day_name_h 
                      + (widget->style->ythickness + INNER_BORDER));
       attributes.width = private_data->week_width;
@@ -1207,12 +1204,13 @@ gtk_calendar_size_request (GtkWidget      *widget,
   /* Mainwindow labels width */
   
   private_data->max_day_char_width = 0;
+  private_data->min_day_width = 0;
   for (i = 0; i < 9; i++)
     {
       sprintf (buffer, "%d%d", i, i);
       pango_layout_set_text (layout, buffer, -1);        
       pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
-      private_data->min_day_width = MAX (private_data->max_day_char_width,
+      private_data->min_day_width = MAX (private_data->min_day_width,
                                         logical_rect.width);
 
       private_data->max_day_char_ascent = MAX (private_data->max_label_char_ascent,
@@ -1221,7 +1219,7 @@ gtk_calendar_size_request (GtkWidget        *widget,
                                                PANGO_DESCENT (logical_rect));
     }
   /* We add one to max_day_char_width to be able to make the marked day "bold" */
-  private_data->max_day_char_width = private_data->min_day_width / 2 +1;
+  private_data->max_day_char_width = private_data->min_day_width / 2 + 1;
   
   if (calendar->display_flags & GTK_CALENDAR_SHOW_DAY_NAMES)
     for (i = 0; i < 7; i++)
@@ -1403,37 +1401,6 @@ gtk_calendar_size_allocate (GtkWidget      *widget,
     }
 }
 
-static void
-gtk_calendar_draw_focus (GtkWidget *widget)
-{
-  GtkCalendar *calendar;
-  GtkCalendarPrivateData *private_data;
-  gint width, height;
-  gint x, y;
-  
-  g_return_if_fail (GTK_IS_CALENDAR (widget));
-
-  calendar = GTK_CALENDAR (widget);
-  private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
-  
-  if (GTK_WIDGET_DRAWABLE (widget))
-    {
-      x = 0;
-      y = 0;
-      gdk_window_get_size (widget->window, &width, &height);
-      gdk_window_clear (widget->window);
-      
-      gdk_draw_rectangle (widget->window, 
-                         widget->style->base_gc[GTK_WIDGET_STATE (widget)],
-                         FALSE, x + 2, y + 2, width - 5, height - 5);
-      
-      gtk_draw_shadow (widget->style, widget->window,
-                      GTK_STATE_NORMAL, GTK_SHADOW_IN,
-                      x, y, width, height);
-      
-    }
-}
-
 static gboolean
 gtk_calendar_expose (GtkWidget     *widget,
                     GdkEventExpose *event)
@@ -1462,40 +1429,16 @@ gtk_calendar_expose (GtkWidget      *widget,
       if (event->window == private_data->week_win)
        gtk_calendar_paint_week_numbers (widget);
       if (event->window == widget->window)
-       gtk_calendar_draw_focus (widget);
+       {
+         gtk_paint_shadow (widget->style, widget->window, GTK_WIDGET_STATE (widget),
+                           GTK_SHADOW_IN, NULL, widget, "calendar",
+                           0, 0, widget->allocation.width, widget->allocation.height);
+       }
     }
   
   return FALSE;
 }
 
-static void
-gtk_calendar_paint (GtkWidget   *widget,
-                   GdkRectangle *area)
-{
-  GtkCalendar *calendar;
-  GtkCalendarPrivateData *private_data;
-
-  g_return_if_fail (GTK_IS_CALENDAR (widget));
-  g_return_if_fail (widget->window != NULL);
-  
-  calendar = GTK_CALENDAR (widget);
-  private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
-  
-  if (private_data->main_win != NULL)
-    gtk_calendar_paint_main (widget);
-  
-  if (private_data->header_win != NULL)
-    gtk_calendar_paint_header (widget);
-  
-  if (private_data->day_name_win != NULL)
-    gtk_calendar_paint_day_names (widget);
-  
-  if (private_data->week_win != NULL)
-    gtk_calendar_paint_week_numbers (widget);
-  
-  gtk_calendar_draw_focus (widget);
-}
-
 static void
 gtk_calendar_paint_header (GtkWidget *widget)
 {
@@ -1623,7 +1566,7 @@ gtk_calendar_paint_day_names (GtkWidget *widget)
    * Draw rectangles as inverted background for the labels.
    */
   
-  gdk_gc_set_foreground (gc, &widget->style->bg[GTK_STATE_SELECTED]);
+  gdk_gc_set_foreground (gc, &widget->style->base[GTK_STATE_SELECTED]);
   gdk_draw_rectangle (private_data->day_name_win, gc, TRUE,
                      CALENDAR_MARGIN, CALENDAR_MARGIN,
                      cal_width-CALENDAR_MARGIN * 2,
@@ -1642,7 +1585,7 @@ gtk_calendar_paint_day_names (GtkWidget *widget)
 
   layout = gtk_widget_create_pango_layout (widget, NULL);
   
-  gdk_gc_set_foreground (gc, &widget->style->fg[GTK_STATE_SELECTED]);
+  gdk_gc_set_foreground (gc, &widget->style->text[GTK_STATE_SELECTED]);
   for (i = 0; i < 7; i++)
     {
       if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL)
@@ -1708,7 +1651,7 @@ gtk_calendar_paint_week_numbers (GtkWidget *widget)
    * Draw a rectangle as inverted background for the labels.
    */
   
-  gdk_gc_set_foreground (gc, &widget->style->bg[GTK_STATE_SELECTED]);
+  gdk_gc_set_foreground (gc, &widget->style->base[GTK_STATE_SELECTED]);
   if (private_data->day_name_win)
     gdk_draw_rectangle (private_data->week_win, gc, TRUE,
                        CALENDAR_MARGIN,
@@ -1728,7 +1671,7 @@ gtk_calendar_paint_week_numbers (GtkWidget *widget)
   
   layout = gtk_widget_create_pango_layout (widget, NULL);
   
-  gdk_gc_set_foreground (gc, &widget->style->fg[GTK_STATE_SELECTED]);
+  gdk_gc_set_foreground (gc, &widget->style->text[GTK_STATE_SELECTED]);
   day_height = row_height (calendar);
   for (row = 0; row < 6; row++)
     {
@@ -1855,7 +1798,7 @@ gtk_calendar_paint_day (GtkWidget *widget,
       */
       if (calendar->selected_day == day)
        {
-         gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->bg[GTK_STATE_SELECTED]));
+         gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->base[GTK_STATE_SELECTED]));
          gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
                              private_data->day_width, day_height);
        }
@@ -1866,7 +1809,7 @@ gtk_calendar_paint_day (GtkWidget *widget,
        gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar)));
   
       if (calendar->selected_day == day)
-       gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_STATE_SELECTED]));
+       gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->text[GTK_STATE_SELECTED]));
       else
        gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_WIDGET_STATE (calendar)]));
     }
@@ -2152,9 +2095,7 @@ gtk_calendar_select_month (GtkCalendar *calendar,
   
   gtk_calendar_compute_days (calendar);
   
-  if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
-    gtk_calendar_paint (GTK_WIDGET (calendar), NULL);
-  
+  gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_signal_emit (GTK_OBJECT (calendar),
                   gtk_calendar_signals[MONTH_CHANGED_SIGNAL]);
   return TRUE;